package de.lengnis.games.brickdrop.factory;

import java.awt.Color;

import de.lengnis.games.brickdrop.model.Brick;
import de.lengnis.games.brickdrop.model.BrickTyp;
import de.lengnis.games.brickdrop.model.TeilBrick;

public class BrickFactory {

    public static Brick getIBrick() {

        Brick brick = new Brick();
        brick.setTyp(BrickTyp.I);

        for (int i = 0; i < 4; i++)
            brick.addTeilBrick(new TeilBrick(i * TeilBrick.SEITENLAENGE, 0, Color.CYAN));

        return brick;
    }

    public static Brick getJBrick() {

        Brick brick = new Brick();
        brick.setTyp(BrickTyp.J);

        brick.addTeilBrick(new TeilBrick(0, 0, Color.BLUE));

        for (int i = 0; i < 3; i++)
            brick.addTeilBrick(new TeilBrick(i * TeilBrick.SEITENLAENGE, TeilBrick.SEITENLAENGE, Color.BLUE));

        return brick;
    }

    public static Brick getLBrick() {

        Brick brick = new Brick();
        brick.setTyp(BrickTyp.L);

        for (int i = 0; i < 3; i++)
            brick.addTeilBrick(new TeilBrick(i * TeilBrick.SEITENLAENGE, TeilBrick.SEITENLAENGE, Color.ORANGE));

        brick.addTeilBrick(new TeilBrick(2 * TeilBrick.SEITENLAENGE, 0, Color.ORANGE));

        return brick;
    }

    public static Brick getOBrick() {

        Brick brick = new Brick();
        brick.setTyp(BrickTyp.O);

        for (int i = 0; i < 2; i++)
            brick.addTeilBrick(new TeilBrick(i * TeilBrick.SEITENLAENGE, 0, Color.YELLOW));

        for (int i = 0; i < 2; i++)
            brick.addTeilBrick(new TeilBrick(i * TeilBrick.SEITENLAENGE, TeilBrick.SEITENLAENGE, Color.YELLOW));

        return brick;
    }

    public static Brick getSBrick() {

        Brick brick = new Brick();
        brick.setTyp(BrickTyp.S);

        for (int i = 1; i < 3; i++)
            brick.addTeilBrick(new TeilBrick(i * TeilBrick.SEITENLAENGE, 0, Color.GREEN));

        for (int i = 0; i < 2; i++)
            brick.addTeilBrick(new TeilBrick(i * TeilBrick.SEITENLAENGE, TeilBrick.SEITENLAENGE, Color.GREEN));

        return brick;
    }

    public static Brick getTBrick() {

        Brick brick = new Brick();
        brick.setTyp(BrickTyp.T);

        brick.addTeilBrick(new TeilBrick(TeilBrick.SEITENLAENGE, 0, Color.MAGENTA));

        for (int i = 0; i < 3; i++)
            brick.addTeilBrick(new TeilBrick(i * TeilBrick.SEITENLAENGE, TeilBrick.SEITENLAENGE, Color.MAGENTA));

        return brick;
    }

    public static Brick getZBrick() {

        Brick brick = new Brick();
        brick.setTyp(BrickTyp.Z);

        for (int i = 0; i < 2; i++)
            brick.addTeilBrick(new TeilBrick(i * TeilBrick.SEITENLAENGE, 0, Color.RED));

        for (int i = 1; i < 3; i++)
            brick.addTeilBrick(new TeilBrick(i * TeilBrick.SEITENLAENGE, TeilBrick.SEITENLAENGE, Color.RED));

        return brick;
    }

    public static Brick getZufallsBrick() {

        int zufallsZahl = (int) (Math.random() * 7 + 1);

        switch (zufallsZahl) {
            case 1:
                return getIBrick();
            case 2:
                return getJBrick();
            case 3:
                return getLBrick();
            case 4:
                return getOBrick();
            case 5:
                return getSBrick();
            case 6:
                return getTBrick();
            case 7:
                return getZBrick();
            default:
                return null;
        }
    }
}
